package com.paobuji.aidebao.myapplication.ui;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Toast;

import com.jaeger.library.StatusBarUtil;
import com.paobuji.aidebao.myapplication.MainActivity;
import com.paobuji.aidebao.myapplication.R;
import com.paobuji.aidebao.myapplication.activity.BaseActivity;
import com.paobuji.aidebao.myapplication.appinterface.GetInterfaceObjctListener;
import com.paobuji.aidebao.myapplication.bean.UserBeanResult;
import com.paobuji.aidebao.myapplication.tool.ACache;
import com.paobuji.aidebao.myapplication.tool.GetAppInfoUtil;
import com.paobuji.aidebao.myapplication.tool.MyIntentTools;

import butterknife.ButterKnife;

public class StartActivity extends BaseActivity {

    Intent intent;
    UserBeanResult.DataBean.UserBean userBean;
    ACache aCache;
    Context context;
    MyIntentTools myIntentTools1;
    MyIntentTools myIntentTools2;
    String userState;
    Handler x;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);
        ButterKnife.bind(this);
        //设置全透明
        StatusBarUtil.setTransparent(this);
        context = getApplicationContext();
        aCache = ACache.get(context);

        myIntentTools1 = new MyIntentTools();
        myIntentTools2 = new MyIntentTools();
        x = new Handler();//定义一个handle对象

        if(isNetworkConnected(this)){
            //如果没有用户状态记录则游客登录
            if("".equals(getUserState())){                        //如果用户首次安装进入
                goMainByVisitor();
            }else if("false".equals(getUserState())){             //如果用户有记录，但为false说明账号注销，进入登录界面
                x.postDelayed(new goToLoginActivity(), 2000);      //设置3秒钟延迟执行splashhandler线程。其实你这里可以再新建一个线程去执行初始化工作，如判断SD,网络状态等
            }else if("true".equals(getUserState())){              //如果为true，进入首界面
                getCatch();
//                getApp();
                x.postDelayed(new goToMainActivity(), 2000);//设置3秒钟延迟执行splashhandler线程。其实你这里可以再新建一个线程去执行初始化工作，如判断SD,网络状态等

            }else{
                goMainByVisitor();
            }
        }else {
            Toast.makeText(this,R.string.connection,Toast.LENGTH_SHORT).show();

            AlertDialog alertDialog1 = new AlertDialog.Builder(this)
                    .setTitle(R.string.network)//标题
                    .setMessage(R.string.upload)//内容
                    .setIcon(R.mipmap.aipao)//图标
                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            finish();
                        }
                    })
                    .create();
            alertDialog1.show();
        }
//        getCatch();
       // getApp();
    }

    @Override
    protected void initData() {

    }

    @Override
    protected void initView() {

    }

    /**
     * 从缓存中获取用户信息
     */
    public void getCatch(){
        userBean = (UserBeanResult.DataBean.UserBean) aCache.getAsObject("userBean");
        //如果用户信息为空，则新建用户
        if(userBean == null){
            userBean = new UserBeanResult.DataBean.UserBean();
        }
    }

    //判断是否为游客用户,若果是游客
    public void getApp(){
        //如果没有电话号码，怎定义为游客，从网络拿去数据
        if("".equals(userBean.getUserphone()) || userBean.getUserphone() == null){
            myIntentTools1.loginUserByIdentified(context,GetAppInfoUtil.getUniquePsuedoID());
            myIntentTools1.setGetInterfaceObjctListener(new GetInterfaceObjctListener() {
                @Override
                public void getObjectDate(Object data) {
                    //这里在服务端做设置
                    if("".equals(((UserBeanResult)data).getData().getUser().getUsername()) || ((UserBeanResult)data).getData().getUser().getUsername() == null){
                        ((UserBeanResult)data).getData().getUser().setUsername("baobao");
                    }
                    if(((UserBeanResult)data).getData().getUser().getUserImg() == null || "".equals(((UserBeanResult)data).getData().getUser().getUserImg())){
                        ((UserBeanResult)data).getData().getUser().setUserImg("http://www.qqxoo.com/uploads/allimg/160208/19291Q227-3.jpg");
                    }

                    //将用户信息保存在缓存中
                    aCache.put("userBean",((UserBeanResult)data).getData().getUser());

                    //表示用户已经登录
                    aCache.put("userstate","true");

                    //进入首界面
                   // startActivity(new Intent(getApplication(),MainActivity.class));
                  //  StartActivity.this.finish();
                }
            });
        }else{
            myIntentTools1.selectUserByPhone(context,userBean.getUserphone());
            myIntentTools1.setGetInterfaceObjctListener(new GetInterfaceObjctListener() {
                @Override
                public void getObjectDate(Object data) {
                    //将用户信息保存在缓存中
                    aCache.put("userBean",((UserBeanResult)data).getData().getUser());

                    //表示用户已经登录
                    aCache.put("userstate","true");
                    //进入首界面
                    startActivity(new Intent(getApplication(),MainActivity.class));
                    StartActivity.this.finish();
                }
            });
        }
    }

    /**
     * 游客登录
     */
    public void goMainByVisitor(){
        myIntentTools2.loginUserByIdentified(context,GetAppInfoUtil.getUniquePsuedoID());
        x.postDelayed(new goToMainActivity(), 1000);//设置3秒钟延迟执行splashhandler线程。其实你这里可以再新建一个线程去执行初始化工作，如判断SD,网络状态等

//        myIntentTools2.setGetInterfaceObjctListener(new GetInterfaceObjctListener() {
//            @Override
//            public void getObjectDate(Object data) {
//                //这里在服务端做设置
//                if("".equals(((UserBeanResult)data).getData().getUser().getUsername()) || ((UserBeanResult)data).getData().getUser().getUsername() == null){
//                    ((UserBeanResult)data).getData().getUser().setUsername("baobao");
//                }
//                if(((UserBeanResult)data).getData().getUser().getUserImg() == null || "".equals(((UserBeanResult)data).getData().getUser().getUserImg())){
//                    ((UserBeanResult)data).getData().getUser().setUserImg("http://www.qqxoo.com/uploads/allimg/160208/19291Q227-3.jpg");
//                }
//
//                //将用户信息保存在缓存中
//                aCache.put("userBean",((UserBeanResult)data).getData().getUser());
//
//                //表示用户已经登录
//                aCache.put("userstate","true");
//                x.postDelayed(new goToMainActivity(), 1000);//设置3秒钟延迟执行splashhandler线程。其实你这里可以再新建一个线程去执行初始化工作，如判断SD,网络状态等
//            }
//        });
    }

    class goToMainActivity implements Runnable {
        public void run() {
            startActivity(new Intent(getApplication(),MainActivity.class));// 这个线程的作用3秒后就是进入到你的主界面
            StartActivity.this.finish();
        }
    }

    class goToLoginActivity implements Runnable {
        public void run() {
            startActivity(new Intent(getApplication(),LoginActivity.class));// 这个线程的作用3秒后就是进入到你的主界面
            StartActivity.this.finish();
        }
    }

    /***
     * 获取用户登录状态
     */
    public String getUserState(){
        if( aCache.getAsString("userstate") == null  ||  "".equals(aCache.getAsString("userstate"))){
            return  "";
        }
        return aCache.getAsString("userstate");
    }
}
